const path = require("path");

console.log(__filename);

// 1. 获取路径中的基础名称
/**
 * 01. 返回的就是接收路径中的最后一部分
 * 02. 参数类型是字符串， 如果不是就会报错
 * 03. 第二个参数表示扩展名， 如果说没有设置则返回完整的文件名称带后缀
 * 04. 第二个参数作为后缀时，如果没有在当前路径中被匹配到， name就会忽略
 * 05. 处理目录路径的时候， 如果说结尾处有路径分隔符，则也会被忽略掉
 */
// console.log(path.basename(__filename));
// console.log(path.basename(__filename, ".js"));
// console.log(path.basename(__filename, ".css"));
// console.log(path.basename("/a/b/c"));
// console.log(path.basename("/a/b/c/"));

// 2. 获取路径目录名(路径)
/**
 * 01. 返回路径中最后一个部分的上一层目录所在路径
 * 02. 参数类型是字符串， 如果不是就会报错
 * 03. 处理目录路径的时候， 如果说结尾处有路径分隔符，则也会被忽略掉
 */
// console.log(path.dirname(__filename));
// console.log(path.dirname("/a/b/c"));
// console.log(path.dirname("/a/b/c/"));

// 3. 获取路径的扩展名
/**
 * 01. 返回 path路径中相应文件的后缀名（不是文件目录哟）
 * 02. 如果path 路径中存在多个点， 他匹配的是最后一个点，到结尾的内容
 */
// console.log(path.extname(__filename));
// console.log(path.extname("/a/b/c"));
// console.log(path.extname("/a/b/index.html.js.css"));
// console.log(path.extname("/a/b/index.html.js."));

// 4. 解析路径
/**
 * 01. 接收一个路径， 返回一个对象，包含不同的细腻
 * 02. root， dir， base， ext， name
 */
// const obj = path.parse("/a/b/c/index.html");
// const obj = path.parse("/a/b/c");
// const obj = path.parse("/a/b/c/");
// const obj = path.parse("./a/b/c/");
// console.log(obj);
// root: 根路径
// dir：文件的父路径
// base：完整的文件名称
// ext：文件后缀
// name： 文件名称

// 5. 序列化路径
// const obj = path.parse("./a/b/c");
// console.log(path.format(obj));

// 6. 判断当前路径是否是绝对路径
// console.log(path.isAbsolute("foo"));
// console.log(path.isAbsolute("/foo"));
// console.log(path.isAbsolute("///foo"));
// console.log(path.isAbsolute(""));
// console.log(path.isAbsolute("."));
// console.log(path.isAbsolute("../bar"));

// 7. 拼接路径
// console.log(path.join("a/b", "c", "index.html"));
// console.log(path.join("/a/b", "c", "index.html"));
// console.log(path.join("/a/b", "c", "../", "index.html"));
// console.log(path.join("/a/b", "c", "./", "index.html"));
// console.log(path.join("/a/b", "c", "", "index.html"));
// console.log(path.join(""));

// 8. 规范化路径
// console.log(path.normalize(""));
// console.log(path.normalize("a/b/c/d"));
// console.log(path.normalize("a///b/c..//d"));
// console.log(path.normalize("a//\\b/c\\/d"));
// console.log(path.normalize("a//\b/c\\/d"));

// 9. 返回绝对路径
/**
 * resolve([from], to) ==> cd 每一个参数
 */
console.log(path.resolve()); // cwd--> current workspace directory
console.log(path.resolve("a", "b"));
console.log(path.resolve("a", "/b"));
console.log(path.resolve("/a", "/b"));
console.log(path.resolve("/a", "b"));
